/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.brasilerp.recepcao;

import br.com.brasilerp.compras.Compravel;
import br.com.brasilerp.compras.Montante;
import br.com.brasilerp.estoque.Estocavel;
import br.com.brasilerp.estoque.Estoque;
import br.com.brasilerp.estoque.EstoqueException;
import br.com.brasilerp.fatura.ContasAPagar;
import br.com.brasilerp.fatura.Pagamento;
import java.util.List;

/**
 *
 * @author rgrosz
 */
public class Recepcao {
    private Estoque estoque;
    private ContasAPagar contasAPagar;
    private RegistradorRecebimento registradorRecebimento;
    public void setEstoque(Estoque estoque){
        this.estoque = estoque;
    }
    
    public void setContasAPagar(ContasAPagar contasAPagar){
        this.contasAPagar = contasAPagar;
    }
    public void receberProduto(Recepcionavel item) throws RecepcaoException{
        this.gerarPagamento(item.getNotaEntrada());
        try {
            this.incluirEstoque(item.getItensComprados());
        } catch (EstoqueException ex) {
            throw new RecepcaoException(ex);
        }
    }
    
    public void registrarRecebimento(Recepcionavel item){
        this.registradorRecebimento.registrar(item);
    }
    
    protected void gerarPagamento(NotaEntrada nota){
        Pagamento pagamento = new Pagamento();
        Montante m = new Montante();
        m.setValor(nota.getValor());
        pagamento.setFornecedor(nota.getFornecedor());
        this.contasAPagar.adicionarPagamento(pagamento);
    }
    
    protected void incluirEstoque(List <Compravel> itensComprados) throws EstoqueException{
        for(Estocavel item : itensComprados){
            estoque.inserirProduto(item, 1);
        }        
    }
}
